class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Deque<Integer> st = new LinkedList<>();
        Map<Integer,Integer> ans = new HashMap<>();
        for(int i=0; i<nums2.length; i++){
            /*
                如1,5,3,6
                遍历1，直接入栈 【1】
                遍历5，此时把栈中全部小于5的元素弹出来 【5】
                遍历3，入栈【5,3】
                遍历6，此时把栈中全部小于6的元素弹出来 【6】
            */
            while( !st.isEmpty() && st.peek()<nums2[i] ){
                ans.put(st.peek(),nums2[i]);
                st.pop();
            }
            st.push(nums2[i]);
        }
        int[] res = new int[nums1.length];
         for(int i=0; i<nums1.length; i++){
            res[i] = ans.get(nums1[i])==null ? -1 : ans.get(nums1[i]);
        }
        return res;
    }
}